<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>Oct25-X</title><meta name="author" content="Oct25-X"><meta name="copyright" content="Oct25-X"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta property="og:type" content="website">
<meta property="og:title" content="Oct25-X">
<meta property="og:url" content="https://oct25-x.atomgit.net/oct25-xxxxx/page/2/index.html">
<meta property="og:site_name" content="Oct25-X">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://oct25-x.atomgit.net/oct25-xxxxx/img/avatar.jpg">
<meta property="article:author" content="Oct25-X">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://oct25-x.atomgit.net/oct25-xxxxx/img/avatar.jpg"><link rel="shortcut icon" href="/oct25-xxxxx/img/logo.jpg"><link rel="canonical" href="https://oct25-x.atomgit.net/oct25-xxxxx/page/2/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/oct25-xxxxx/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = { 
  root: '/oct25-xxxxx/',
  algolia: undefined,
  localSearch: {"path":"search.json","languages":{"hits_empty":"找不到您查询的内容：${query}"}},
  translate: {"defaultEncoding":2,"translateDelay":0,"msgToTraditionalChinese":"繁","msgToSimplifiedChinese":"簡"},
  noticeOutdate: undefined,
  highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
  copy: {
    success: '复制成功',
    error: '复制错误',
    noSupport: '浏览器不支持'
  },
  relativeDate: {
    homepage: false,
    post: false
  },
  runtime: '',
  date_suffix: {
    just: '刚刚',
    min: '分钟前',
    hour: '小时前',
    day: '天前',
    month: '个月前'
  },
  copyright: undefined,
  lightbox: 'fancybox',
  Snackbar: undefined,
  source: {
    justifiedGallery: {
      js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery@2/dist/fjGallery.min.js',
      css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery@2/dist/fjGallery.min.css'
    }
  },
  isPhotoFigcaption: false,
  islazyload: false,
  isAnchor: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
  title: 'Oct25-X',
  isPost: false,
  isHome: true,
  isHighlightShrink: false,
  isToc: false,
  postUpdate: '2024-05-19 17:27:58'
}</script><noscript><style type="text/css">
  #nav {
    opacity: 1
  }
  .justified-gallery img {
    opacity: 1
  }

  #recent-posts time,
  #post-meta time {
    display: inline !important
  }
</style></noscript><script>(win=>{
    win.saveToLocal = {
      set: function setWithExpiry(key, value, ttl) {
        if (ttl === 0) return
        const now = new Date()
        const expiryDay = ttl * 86400000
        const item = {
          value: value,
          expiry: now.getTime() + expiryDay,
        }
        localStorage.setItem(key, JSON.stringify(item))
      },

      get: function getWithExpiry(key) {
        const itemStr = localStorage.getItem(key)

        if (!itemStr) {
          return undefined
        }
        const item = JSON.parse(itemStr)
        const now = new Date()

        if (now.getTime() > item.expiry) {
          localStorage.removeItem(key)
          return undefined
        }
        return item.value
      }
    }
  
    win.getScript = url => new Promise((resolve, reject) => {
      const script = document.createElement('script')
      script.src = url
      script.async = true
      script.onerror = reject
      script.onload = script.onreadystatechange = function() {
        const loadState = this.readyState
        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
        script.onload = script.onreadystatechange = null
        resolve()
      }
      document.head.appendChild(script)
    })
  
      win.activateDarkMode = function () {
        document.documentElement.setAttribute('data-theme', 'dark')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
        }
      }
      win.activateLightMode = function () {
        document.documentElement.setAttribute('data-theme', 'light')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
        }
      }
      const t = saveToLocal.get('theme')
    
          if (t === 'dark') activateDarkMode()
          else if (t === 'light') activateLightMode()
        
      const asideStatus = saveToLocal.get('aside-status')
      if (asideStatus !== undefined) {
        if (asideStatus === 'hide') {
          document.documentElement.classList.add('hide-aside')
        } else {
          document.documentElement.classList.remove('hide-aside')
        }
      }
    
    const detectApple = () => {
      if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
        document.documentElement.classList.add('apple')
      }
    }
    detectApple()
    })(window)</script><link rel="stylesheet" href="/css/rightMenu.css"><meta name="generator" content="Hexo 6.1.0"></head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="/oct25-xxxxx/img/avatar.jpg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="site-data is-center"><div class="data-item"><a href="/oct25-xxxxx/archives/"><div class="headline">文章</div><div class="length-num">52</div></a></div><div class="data-item"><a href="/oct25-xxxxx/tags/"><div class="headline">标签</div><div class="length-num">17</div></a></div><div class="data-item"><a href="/oct25-xxxxx/categories/"><div class="headline">分类</div><div class="length-num">8</div></a></div></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/oct25-xxxxx/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/oct25-xxxxx/archives/"><i class="fa-fw fas fa-archive"></i><span> 归档</span></a></div><div class="menus_item"><a class="site-page" href="/oct25-xxxxx/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/oct25-xxxxx/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page" href="/oct25-xxxxx/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div></div></div><div class="page" id="body-wrap"><header class="full_page" id="page-header" style="background-image: url('/oct25-xxxxx/img/bg.png')"><nav id="nav"><span id="blog_name"><a id="site-name" href="/oct25-xxxxx/">Oct25-X</a></span><div id="menus"><div id="search-button"><a class="site-page social-icon search"><i class="fas fa-search fa-fw"></i><span> 搜索</span></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/oct25-xxxxx/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/oct25-xxxxx/archives/"><i class="fa-fw fas fa-archive"></i><span> 归档</span></a></div><div class="menus_item"><a class="site-page" href="/oct25-xxxxx/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/oct25-xxxxx/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page" href="/oct25-xxxxx/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="site-info"><h1 id="site-title">Oct25-X</h1><div id="site-subtitle"><span id="subtitle"></span></div></div><div id="scroll-down"><i class="fas fa-angle-down scroll-down-effects"></i></div></header><main class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div class="recent-post-item"><div class="post_cover left"><a href="/oct25-xxxxx/2024/01/03/42%E6%95%B0%E6%8D%AE%E9%87%87%E9%9B%86%E7%B3%BB%E7%BB%9F-Flume/" title="数据采集系统 Flume"><img class="post_bg" src="/oct25-xxxxx/img/cover_img/ctt42.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="数据采集系统 Flume"></a></div><div class="recent-post-info"><a class="article-title" href="/oct25-xxxxx/2024/01/03/42%E6%95%B0%E6%8D%AE%E9%87%87%E9%9B%86%E7%B3%BB%E7%BB%9F-Flume/" title="数据采集系统 Flume">数据采集系统 Flume</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2024-01-03T00:30:37.000Z" title="发表于 2024-01-03 08:30:37">2024-01-03</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/oct25-xxxxx/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE%E7%BB%84%E4%BB%B6/">大数据组件</a></span></div><div class="content">Flume 概述一、Flume 定义Flume 是 Cloudera 提供的一个高可用的，高可靠的，分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构，灵活简单。
为什么选择使用 Flume？
Flume 最主要的作用就是，实时读取服务器本地磁盘的数据，将数据写入到 HDFS，或者是 Kafka等。
二、Flume 基础架构
AgentAgent 是一个 JVM 进程，它以事件的形式将数据从源头送至目的。
Agent主要有3个部分组成，Source、Channel、Sink。
SourceSource 是负责接 收数据到 Flume Agent 的组件。Source 组件可以处理各种类型、各种格式的日志数据，包括 Avro Source、Thrift Source、Exec Source、JMS Source、Spooling Directory Source、Taildir Source、Kafka Source、NetCat TCP&#x2F;UDP Source、Sequence Generator Source、Syslog Source、Http Source 和 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/oct25-xxxxx/2023/12/31/41ubuntu-%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2/" title="ubuntu 安装 Java/MySQL/Redis"><img class="post_bg" src="/oct25-xxxxx/img/cover_img/ctt41.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="ubuntu 安装 Java/MySQL/Redis"></a></div><div class="recent-post-info"><a class="article-title" href="/oct25-xxxxx/2023/12/31/41ubuntu-%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2/" title="ubuntu 安装 Java/MySQL/Redis">ubuntu 安装 Java/MySQL/Redis</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-12-31T01:12:22.000Z" title="发表于 2023-12-31 09:12:22">2023-12-31</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/oct25-xxxxx/categories/%E9%9A%8F%E7%AC%94/">随笔</a></span></div><div class="content">Java8更新软件包
1sudo apt udpate

安装 JDK
1sudo apt install openjdk-8-jdk

验证安装
1234java -versionopenjdk version &quot;1.8.0_392&quot;OpenJDK Runtime Environment (build 1.8.0_392-8u392-ga-1~22.04-b08)OpenJDK 64-Bit Server VM (build 25.392-b08, mixed mode)

MySQL8更新软件包
1sudo apt udpate

安装 MySQL 服务
1sudo apt install mysql-server

查看 MySQL 服务是否启动
1sudo systemctl status mysql

连接 MySQL
1sudo msyql

修改 MySQL 的 root 密码
12345# 切换数据库use mysql# 修改密码alter user &#x27;root&#x27;@&#x27;localhost&#x27; identified  ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/oct25-xxxxx/2023/12/26/40%E5%BC%80%E6%BA%90%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E5%BC%95%E6%93%8EDocker_06%E8%BD%BB%E9%87%8F%E7%BA%A7%E5%8F%AF%E8%A7%86%E5%8C%96%E5%B7%A5%E5%85%B7Portainer/" title="开源应用容器引擎 Docker_06轻量级可视化工具Portainer"><img class="post_bg" src="/oct25-xxxxx/img/cover_img/ctt40.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="开源应用容器引擎 Docker_06轻量级可视化工具Portainer"></a></div><div class="recent-post-info"><a class="article-title" href="/oct25-xxxxx/2023/12/26/40%E5%BC%80%E6%BA%90%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E5%BC%95%E6%93%8EDocker_06%E8%BD%BB%E9%87%8F%E7%BA%A7%E5%8F%AF%E8%A7%86%E5%8C%96%E5%B7%A5%E5%85%B7Portainer/" title="开源应用容器引擎 Docker_06轻量级可视化工具Portainer">开源应用容器引擎 Docker_06轻量级可视化工具Portainer</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-12-26T10:32:59.000Z" title="发表于 2023-12-26 18:32:59">2023-12-26</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/oct25-xxxxx/categories/%E5%AE%B9%E5%99%A8%E5%8C%96/">容器化</a></span></div><div class="content">轻量级可视化工具 PortainerPortainer 是一款轻量级的应用，它提供了图形化界面，用于方便地管理 Docker 环境，包括单机环境和集群环境
一、官网官网：https://www.portainer.io/
二、安装
docker 命令安装

12345docker run -d -p 8000:8000 -p 9000:9000 --name protainer \  --restart=always \  -v /var/run/docker.sock:/var/run/docker.sock \  -v protainer_data:/data \  portainer/portainer

–restart&#x3D;always：就是在 docker 重启后，protainer 也跟着重启，与 docker 启停保持一致

容器启动成功后，可以访问 Web 地址，http://192.168.8.100:9000，首次登录，需要设置密码



选择连接的 Docker，这里直接连接本地即可



登录连接后来到首页，这里就是连接的 Docker 容器，目前只有本 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/oct25-xxxxx/2023/12/19/39%E5%BC%80%E6%BA%90%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E5%BC%95%E6%93%8EDocker_05Docker%E7%BD%91%E7%BB%9C/" title="开源应用容器引擎 Docker_05Docker网络和Comprose容器编排"><img class="post_bg" src="/oct25-xxxxx/img/cover_img/ctt39.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="开源应用容器引擎 Docker_05Docker网络和Comprose容器编排"></a></div><div class="recent-post-info"><a class="article-title" href="/oct25-xxxxx/2023/12/19/39%E5%BC%80%E6%BA%90%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E5%BC%95%E6%93%8EDocker_05Docker%E7%BD%91%E7%BB%9C/" title="开源应用容器引擎 Docker_05Docker网络和Comprose容器编排">开源应用容器引擎 Docker_05Docker网络和Comprose容器编排</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-12-19T01:14:25.000Z" title="发表于 2023-12-19 09:14:25">2023-12-19</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/oct25-xxxxx/categories/%E5%AE%B9%E5%99%A8%E5%8C%96/">容器化</a></span></div><div class="content">Docker 网络一、Docker 网络是什么docker 服务不启动时，默认会有下面几个网络：

ens33
lo
virbro：安装 Centos7 过程中，选择相关虚拟化的服务安装系统后，就会有这个网卡

docker 服务启动后，网络情况：

docker0

ens33

lo

virbro


查看 docker 网络模式命令
12345[root@hadoop100 ~]$ docker network lsNETWORK ID     NAME      DRIVER    SCOPE3d67d51f9029   bridge    bridge    local4ebab0f5a965   host      host      local2ea04300a5ff   none      null      local

二、常用基本命令查看网络12345docker network lsNETWORK ID     NAME      DRIVER    SCOPE3d67d51f9029   bridge    bridge    local4ebab0f5a9 ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/oct25-xxxxx/2023/12/06/38%E5%BC%80%E6%BA%90%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E5%BC%95%E6%93%8EDocker_04Dockerfile/" title="开源应用容器引擎 Docker_04Dockerfile"><img class="post_bg" src="/oct25-xxxxx/img/cover_img/ctt38.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="开源应用容器引擎 Docker_04Dockerfile"></a></div><div class="recent-post-info"><a class="article-title" href="/oct25-xxxxx/2023/12/06/38%E5%BC%80%E6%BA%90%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E5%BC%95%E6%93%8EDocker_04Dockerfile/" title="开源应用容器引擎 Docker_04Dockerfile">开源应用容器引擎 Docker_04Dockerfile</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-12-06T08:33:19.000Z" title="发表于 2023-12-06 16:33:19">2023-12-06</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/oct25-xxxxx/categories/%E5%AE%B9%E5%99%A8%E5%8C%96/">容器化</a></span></div><div class="content">Dockerfile 解析一、概述Dockerfile 是用来构建 Docker 镜像的文本文件，是由一条条构建镜像所需的指令和参数构成的脚本

官网https://docs.docker.com/engine/reference/builder/
构建三个步骤
编写 Dockerfile 文件
docker build 命令构建镜像
docker run 依镜像运行容器实例

二、Dockerfile 构建过程解析Dockerfile 内容基础知识
每条保留字指令都必须为大写字母且后面要跟随至少一个参数

指令按照从上到下，顺序执行

#表示注释

每条指令都会创建一个新的镜像层并对镜像进行提交


Docker 执行 Dockerfile 大致流程
docker 从基础镜像运行一个容器

执行一条指令并对容器作出修改

执行类似 docker commit 的操作提交一个新的镜像层

docker 再基于刚提交的镜像运行一个新容器

执行 dockerfile 中的下一条指令直到所有指令都执行完成


总结从应用软件的角度来看，Dockerfile、Docker 镜像与 Docke ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/oct25-xxxxx/2023/11/22/37%E5%BC%80%E6%BA%90%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E5%BC%95%E6%93%8EDocker_03%E5%B8%B8%E7%94%A8%E7%BB%84%E4%BB%B6Docker%E5%AE%89%E8%A3%85/" title="开源应用容器引擎Docker_03常用组件Docker安装"><img class="post_bg" src="/oct25-xxxxx/img/cover_img/ctt37.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="开源应用容器引擎Docker_03常用组件Docker安装"></a></div><div class="recent-post-info"><a class="article-title" href="/oct25-xxxxx/2023/11/22/37%E5%BC%80%E6%BA%90%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E5%BC%95%E6%93%8EDocker_03%E5%B8%B8%E7%94%A8%E7%BB%84%E4%BB%B6Docker%E5%AE%89%E8%A3%85/" title="开源应用容器引擎Docker_03常用组件Docker安装">开源应用容器引擎Docker_03常用组件Docker安装</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-11-22T01:50:13.000Z" title="发表于 2023-11-22 09:50:13">2023-11-22</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/oct25-xxxxx/categories/%E5%AE%B9%E5%99%A8%E5%8C%96/">容器化</a></span></div><div class="content">Docer 安装整体步骤
搜索镜像
拉取镜像
查看镜像
启动镜像
服务端口映射


停止容器
移除容器

单机部署 MySQL&#x2F;Redis一、安装 MySQL8安装步骤
拉取镜像

1docker pull mysql:8.0


查看镜像

12345678[root@hadoop100 ~]$ docker imagesREPOSITORY              TAG       IMAGE ID       CREATED         SIZEtomcat                  latest    fb5657adc892   10 months ago   680MBmysql                   8.0       3218b38490ce   10 months ago   516MBregistry                latest    b8604a3fe854   12 months ago   26.2MBubuntu                  latest    ba6acccedd29   13  ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/oct25-xxxxx/2023/11/16/36%E5%BC%80%E6%BA%90%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E5%BC%95%E6%93%8EDocker_02Docker%E9%95%9C%E5%83%8F%E5%92%8C%E5%AE%B9%E5%99%A8%E6%95%B0%E6%8D%AE%E5%8D%B7/" title="开源应用容器引擎 Docker_02Docker镜像和容器数据卷"><img class="post_bg" src="/oct25-xxxxx/img/cover_img/ctt36.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="开源应用容器引擎 Docker_02Docker镜像和容器数据卷"></a></div><div class="recent-post-info"><a class="article-title" href="/oct25-xxxxx/2023/11/16/36%E5%BC%80%E6%BA%90%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E5%BC%95%E6%93%8EDocker_02Docker%E9%95%9C%E5%83%8F%E5%92%8C%E5%AE%B9%E5%99%A8%E6%95%B0%E6%8D%AE%E5%8D%B7/" title="开源应用容器引擎 Docker_02Docker镜像和容器数据卷">开源应用容器引擎 Docker_02Docker镜像和容器数据卷</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-11-16T10:01:33.000Z" title="发表于 2023-11-16 18:01:33">2023-11-16</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/oct25-xxxxx/categories/%E5%AE%B9%E5%99%A8%E5%8C%96/">容器化</a></span></div><div class="content">Docker 镜像一、什么是镜像是一种轻量级、可执行的独立软件包，它包含运行某个软件所需的所有内容，我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等)，这个打包好的运行环境就是 image 镜像文件。
只有通过这个镜像文件才能生成 Docker 容器实例(类似 Java 中 new 出来一个对象)。
二、分层镜像以我们的 pull 为例，在下载的过程中我们可以看到 docker 的镜像好像是在一层一层的在下载。
三、UnionFS（联合文件系统）UnionFS（联合文件系统）：Union 文件系统（UnionFS）是一种分层、轻量级并且高性能的文件系统，它支持对文件系统的修改作为一次提交来一层层的叠加，同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。
Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承，基于基础镜像（没有父镜像），可以制作各种具体的应用镜像。
特性：一次同时加载多个文件系统， ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/oct25-xxxxx/2023/11/03/35%E5%BC%80%E6%BA%90%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E5%BC%95%E6%93%8EDocker_01Docker%E5%85%A5%E9%97%A8/" title="开源应用容器引擎 Docker_01Docker入门"><img class="post_bg" src="/oct25-xxxxx/img/cover_img/ctt35.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="开源应用容器引擎 Docker_01Docker入门"></a></div><div class="recent-post-info"><a class="article-title" href="/oct25-xxxxx/2023/11/03/35%E5%BC%80%E6%BA%90%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E5%BC%95%E6%93%8EDocker_01Docker%E5%85%A5%E9%97%A8/" title="开源应用容器引擎 Docker_01Docker入门">开源应用容器引擎 Docker_01Docker入门</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-11-03T04:01:37.000Z" title="发表于 2023-11-03 12:01:37">2023-11-03</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/oct25-xxxxx/categories/%E5%AE%B9%E5%99%A8%E5%8C%96/">容器化</a></span></div><div class="content">Docker 基础一、什么是 DockerDocker 是基于 Go 语言实现的云开源项目。
Docker 的主要目标是“Build, Ship and Run Any App, Anywhere”，也就是通过对应用组件 的封装、分发、部署、运行等生命周期的管理，使用户的 APP（可以是一个 Web 应用或数据库应用等等）及其运行环境能够做到“一次镜像，处处运行”。

Build, Ship and Run Any App, Anywhere
构建，装载，运行任何 APP，在任何地方

Docker 就是将应用打包成镜像，通过镜像成为运行在 Docker 容器上面的实例，而 Docker 容器在任何操作系统上都是一致的，这就实现了跨平台、跨服务器。
Docker 解决了运行环境和配置问题的软件容器，方便做持续集成，并有助于整体发布的窗口虚拟化技术。
二、容器和虚拟机比较虚拟机传统虚拟机技术基于安装在主操作系统上的虚拟管理系统（如：VMWare 和 VirtualBox等），创建虚拟机，在虚拟机上安装从操作系统，在从操作系统中安装部署各种应用。
Windows10 –&gt; VMWar ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/oct25-xxxxx/2023/10/27/34%E5%BC%82%E6%9E%84%E6%95%B0%E6%8D%AE%E6%BA%90%E5%90%8C%E6%AD%A5%E5%B7%A5%E5%85%B7DataX/" title="异构数据源同步工具DataX"><img class="post_bg" src="/oct25-xxxxx/img/cover_img/ctt34.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="异构数据源同步工具DataX"></a></div><div class="recent-post-info"><a class="article-title" href="/oct25-xxxxx/2023/10/27/34%E5%BC%82%E6%9E%84%E6%95%B0%E6%8D%AE%E6%BA%90%E5%90%8C%E6%AD%A5%E5%B7%A5%E5%85%B7DataX/" title="异构数据源同步工具DataX">异构数据源同步工具DataX</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-10-27T12:12:37.000Z" title="发表于 2023-10-27 20:12:37">2023-10-27</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/oct25-xxxxx/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE%E7%BB%84%E4%BB%B6/">大数据组件</a></span></div><div class="content">概述一、什么是 DataXDataX 是阿里巴巴开源的一个异构数据源离线同步工具，致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高效的数据同步功能。

二、DataX 设计为了解决异构数据源同步问题，DataX 将复杂的网状的同步链路变成了星型数据链路，DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候，只需要将此数据源对接到 DataX，便能跟已有的数据源做到无缝数据同步。

三、支持数据源DataX 目前已经有了比较全面的插件体系，主流的 RDBMS 数据库、NOSQL、大数据计算系统都已经接入。

四、框架设计

Reader：数据采集模块，负责采集数据源的数据，将数据发送给 Framework。

Writer：数据写入模块，负责不断向 Framework 取数据，并将数据写入到目的端。

Framework：用于连接 reader 和 writer，作为两者的数据传输通道，并处理缓冲，流控，并发，数据转换等核心技术问题。


五、运行原理

Job：单个作业的管 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/oct25-xxxxx/2023/10/24/33%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B9%8B%E4%BC%81%E4%B8%9A%E7%BA%A7%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%20ElashticSearch_7.9.3/" title="大数据之企业级搜索引擎 ElashticSearch"><img class="post_bg" src="/oct25-xxxxx/img/cover_img/ctt33.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="大数据之企业级搜索引擎 ElashticSearch"></a></div><div class="recent-post-info"><a class="article-title" href="/oct25-xxxxx/2023/10/24/33%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B9%8B%E4%BC%81%E4%B8%9A%E7%BA%A7%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%20ElashticSearch_7.9.3/" title="大数据之企业级搜索引擎 ElashticSearch">大数据之企业级搜索引擎 ElashticSearch</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-10-23T23:12:33.000Z" title="发表于 2023-10-24 07:12:33">2023-10-24</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/oct25-xxxxx/categories/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E7%BB%84%E4%BB%B6/">微服务组件</a></span></div><div class="content">Elasticsearch 简介ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎，基于 RESTful web 接口。Elasticsearch 是用 Java 开发的，并作为 Apache 许可条款下的开放源码发布，是当前流行的企业级搜索引擎。 
空间换时间，将数据放到  ES中，数据会扩大 5-10 倍，原因在于 ES 会建立很多索引。
一、ElashticSearch 使用场景
为用户提供按关键字查询的全文搜索功能。
实现企业海量数据的处理分析的解决方案。大数据领域的重要一份子，如著名的 ELK （ElasticSearch,Logstash,Kibana）框架。

二、与其他数据存储进行比较



Redis
MySQL
ElashticSearch
HBase
Hadoop&#x2F;Hive



容量&#x2F;容量扩展
低
中
较大
海量
海量


查询时效性
极高
中等
较高
中等
低


查询灵活性
较差，K-V模式
非常好，支持SQL
较好，关联查询（join）较弱，但是可以全文检索，DSL语言可以处理 ...</div></div></div><nav id="pagination"><div class="pagination"><a class="extend prev" rel="prev" href="/oct25-xxxxx/"><i class="fas fa-chevron-left fa-fw"></i></a><a class="page-number" href="/oct25-xxxxx/">1</a><span class="page-number current">2</span><a class="page-number" href="/oct25-xxxxx/page/3/#content-inner">3</a><span class="space">&hellip;</span><a class="page-number" href="/oct25-xxxxx/page/6/#content-inner">6</a><a class="extend next" rel="next" href="/oct25-xxxxx/page/3/#content-inner"><i class="fas fa-chevron-right fa-fw"></i></a></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="is-center"><div class="avatar-img"><img src="/oct25-xxxxx/img/avatar.jpg" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">Oct25-X</div><div class="author-info__description"></div></div><div class="card-info-data is-center"><div class="card-info-data-item"><a href="/oct25-xxxxx/archives/"><div class="headline">文章</div><div class="length-num">52</div></a></div><div class="card-info-data-item"><a href="/oct25-xxxxx/tags/"><div class="headline">标签</div><div class="length-num">17</div></a></div><div class="card-info-data-item"><a href="/oct25-xxxxx/categories/"><div class="headline">分类</div><div class="length-num">8</div></a></div></div><a id="card-info-btn" target="_blank" rel="noopener" href="https://github.com/xxxxxx"><i class="fab fa-github"></i><span>Follow Me</span></a></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/oct25-xxxxx/2024/02/24/52%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B9%8B%E5%A4%9A%E8%8C%83%E5%BC%8F%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80Scala09_%E9%9A%90%E5%BC%8F%E8%BD%AC%E6%8D%A2%E3%80%81%E5%BC%82%E5%B8%B8%E5%92%8C%E6%B3%9B%E5%9E%8B/" title="大数据之多范式编程语言 Scala09_隐式转换、异常和泛型"><img src="/oct25-xxxxx/img/cover_img/ctt52.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="大数据之多范式编程语言 Scala09_隐式转换、异常和泛型"/></a><div class="content"><a class="title" href="/oct25-xxxxx/2024/02/24/52%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B9%8B%E5%A4%9A%E8%8C%83%E5%BC%8F%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80Scala09_%E9%9A%90%E5%BC%8F%E8%BD%AC%E6%8D%A2%E3%80%81%E5%BC%82%E5%B8%B8%E5%92%8C%E6%B3%9B%E5%9E%8B/" title="大数据之多范式编程语言 Scala09_隐式转换、异常和泛型">大数据之多范式编程语言 Scala09_隐式转换、异常和泛型</a><time datetime="2024-02-24T04:55:34.000Z" title="发表于 2024-02-24 12:55:34">2024-02-24</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/oct25-xxxxx/2024/02/24/51%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B9%8B%E5%A4%9A%E8%8C%83%E5%BC%8F%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80Scala08_%E6%A8%A1%E5%BC%8F%E5%8C%B9%E9%85%8D/" title="大数据之多范式编程语言 Scala08_模式匹配"><img src="/oct25-xxxxx/img/cover_img/ctt51.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="大数据之多范式编程语言 Scala08_模式匹配"/></a><div class="content"><a class="title" href="/oct25-xxxxx/2024/02/24/51%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B9%8B%E5%A4%9A%E8%8C%83%E5%BC%8F%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80Scala08_%E6%A8%A1%E5%BC%8F%E5%8C%B9%E9%85%8D/" title="大数据之多范式编程语言 Scala08_模式匹配">大数据之多范式编程语言 Scala08_模式匹配</a><time datetime="2024-02-24T00:46:12.000Z" title="发表于 2024-02-24 08:46:12">2024-02-24</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/oct25-xxxxx/2024/02/22/50%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B9%8B%E5%A4%9A%E8%8C%83%E5%BC%8F%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80Scala07_%E9%9B%86%E5%90%88/" title="大数据之多范式编程语言 Scala07_集合"><img src="/oct25-xxxxx/img/cover_img/ctt50.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="大数据之多范式编程语言 Scala07_集合"/></a><div class="content"><a class="title" href="/oct25-xxxxx/2024/02/22/50%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B9%8B%E5%A4%9A%E8%8C%83%E5%BC%8F%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80Scala07_%E9%9B%86%E5%90%88/" title="大数据之多范式编程语言 Scala07_集合">大数据之多范式编程语言 Scala07_集合</a><time datetime="2024-02-22T08:16:10.000Z" title="发表于 2024-02-22 16:16:10">2024-02-22</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/oct25-xxxxx/2024/02/21/49%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B9%8B%E5%A4%9A%E8%8C%83%E5%BC%8F%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80Scala06_%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/" title="大数据之多范式编程语言 Scala06_面向对象"><img src="/oct25-xxxxx/img/cover_img/ctt49.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="大数据之多范式编程语言 Scala06_面向对象"/></a><div class="content"><a class="title" href="/oct25-xxxxx/2024/02/21/49%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B9%8B%E5%A4%9A%E8%8C%83%E5%BC%8F%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80Scala06_%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/" title="大数据之多范式编程语言 Scala06_面向对象">大数据之多范式编程语言 Scala06_面向对象</a><time datetime="2024-02-21T07:01:10.000Z" title="发表于 2024-02-21 15:01:10">2024-02-21</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/oct25-xxxxx/2024/02/20/48%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B9%8B%E5%A4%9A%E8%8C%83%E5%BC%8F%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80Scala05_%E5%87%BD%E6%95%B0%E5%BC%8F%E7%BC%96%E7%A8%8B/" title="大数据之多范式编程语言 Scala05_函数式编程"><img src="/oct25-xxxxx/img/cover_img/ctt48.png" onerror="this.onerror=null;this.src='/oct25-xxxxx/img/404.jpg'" alt="大数据之多范式编程语言 Scala05_函数式编程"/></a><div class="content"><a class="title" href="/oct25-xxxxx/2024/02/20/48%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B9%8B%E5%A4%9A%E8%8C%83%E5%BC%8F%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80Scala05_%E5%87%BD%E6%95%B0%E5%BC%8F%E7%BC%96%E7%A8%8B/" title="大数据之多范式编程语言 Scala05_函数式编程">大数据之多范式编程语言 Scala05_函数式编程</a><time datetime="2024-02-20T12:05:11.000Z" title="发表于 2024-02-20 20:05:11">2024-02-20</time></div></div></div></div><div class="card-widget card-categories"><div class="item-headline">
            <i class="fas fa-folder-open"></i>
            <span>分类</span>
            
            </div>
            <ul class="card-category-list" id="aside-cat-list">
            <li class="card-category-list-item "><a class="card-category-list-link" href="/oct25-xxxxx/categories/NoSQL%E6%95%B0%E6%8D%AE%E5%BA%93/"><span class="card-category-list-name">NoSQL数据库</span><span class="card-category-list-count">5</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/oct25-xxxxx/categories/%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6/"><span class="card-category-list-name">任务调度</span><span class="card-category-list-count">1</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/oct25-xxxxx/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE%E7%BB%84%E4%BB%B6/"><span class="card-category-list-name">大数据组件</span><span class="card-category-list-count">16</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/oct25-xxxxx/categories/%E5%AE%B9%E5%99%A8%E5%8C%96/"><span class="card-category-list-name">容器化</span><span class="card-category-list-count">6</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/oct25-xxxxx/categories/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E7%BB%84%E4%BB%B6/"><span class="card-category-list-name">微服务组件</span><span class="card-category-list-count">7</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/oct25-xxxxx/categories/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/"><span class="card-category-list-name">消息中间件</span><span class="card-category-list-count">2</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/oct25-xxxxx/categories/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"><span class="card-category-list-name">编程语言</span><span class="card-category-list-count">9</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/oct25-xxxxx/categories/%E9%9A%8F%E7%AC%94/"><span class="card-category-list-name">随笔</span><span class="card-category-list-count">5</span></a></li>
            </ul></div><div class="card-widget card-tags"><div class="item-headline"><i class="fas fa-tags"></i><span>标签</span></div><div class="card-tag-cloud"><a href="/oct25-xxxxx/tags/DataX/" style="font-size: 1.1em; color: #999">DataX</a> <a href="/oct25-xxxxx/tags/Docker/" style="font-size: 1.37em; color: #99a4b2">Docker</a> <a href="/oct25-xxxxx/tags/Elasticsearch/" style="font-size: 1.1em; color: #999">Elasticsearch</a> <a href="/oct25-xxxxx/tags/Flume/" style="font-size: 1.17em; color: #999c9f">Flume</a> <a href="/oct25-xxxxx/tags/Hadoop/" style="font-size: 1.43em; color: #99a6b9">Hadoop</a> <a href="/oct25-xxxxx/tags/Hive/" style="font-size: 1.3em; color: #99a1ac">Hive</a> <a href="/oct25-xxxxx/tags/Kafka/" style="font-size: 1.1em; color: #999">Kafka</a> <a href="/oct25-xxxxx/tags/MongoDB/" style="font-size: 1.23em; color: #999ea6">MongoDB</a> <a href="/oct25-xxxxx/tags/MySQL/" style="font-size: 1.1em; color: #999">MySQL</a> <a href="/oct25-xxxxx/tags/RabbitMQ/" style="font-size: 1.1em; color: #999">RabbitMQ</a> <a href="/oct25-xxxxx/tags/Redis/" style="font-size: 1.23em; color: #999ea6">Redis</a> <a href="/oct25-xxxxx/tags/Scala/" style="font-size: 1.5em; color: #99a9bf">Scala</a> <a href="/oct25-xxxxx/tags/SpringCloud/" style="font-size: 1.3em; color: #99a1ac">SpringCloud</a> <a href="/oct25-xxxxx/tags/SpringSecurity/" style="font-size: 1.1em; color: #999">SpringSecurity</a> <a href="/oct25-xxxxx/tags/XXL-JOB/" style="font-size: 1.1em; color: #999">XXL-JOB</a> <a href="/oct25-xxxxx/tags/Zookeeper/" style="font-size: 1.1em; color: #999">Zookeeper</a> <a href="/oct25-xxxxx/tags/ubuntu/" style="font-size: 1.1em; color: #999">ubuntu</a></div></div><div class="card-widget card-archives"><div class="item-headline"><i class="fas fa-archive"></i><span>归档</span><a class="card-more-btn" href="/oct25-xxxxx/archives/" title="查看更多">
    <i class="fas fa-angle-right"></i></a></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/oct25-xxxxx/archives/2024/02/"><span class="card-archive-list-date">二月 2024</span><span class="card-archive-list-count">9</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/oct25-xxxxx/archives/2024/01/"><span class="card-archive-list-date">一月 2024</span><span class="card-archive-list-count">2</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/oct25-xxxxx/archives/2023/12/"><span class="card-archive-list-date">十二月 2023</span><span class="card-archive-list-count">4</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/oct25-xxxxx/archives/2023/11/"><span class="card-archive-list-date">十一月 2023</span><span class="card-archive-list-count">3</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/oct25-xxxxx/archives/2023/10/"><span class="card-archive-list-date">十月 2023</span><span class="card-archive-list-count">5</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/oct25-xxxxx/archives/2023/09/"><span class="card-archive-list-date">九月 2023</span><span class="card-archive-list-count">6</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/oct25-xxxxx/archives/2023/08/"><span class="card-archive-list-date">八月 2023</span><span class="card-archive-list-count">6</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/oct25-xxxxx/archives/2023/07/"><span class="card-archive-list-date">七月 2023</span><span class="card-archive-list-count">8</span></a></li></ul></div></div></div></main><footer id="footer" style="background-image: url('/oct25-xxxxx/img/bg.png')"><div id="footer-wrap"><div class="copyright">&copy;2020 - 2024 By Oct25-X</div><div class="framework-info"><span>框架 </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="translateLink" type="button" title="简繁转换">繁</button><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div id="local-search"><div class="search-dialog"><nav class="search-nav"><span class="search-dialog-title">本地搜索</span><span id="loading-status"></span><button class="search-close-button"><i class="fas fa-times"></i></button></nav><div class="is-center" id="loading-database"><i class="fas fa-spinner fa-pulse"></i><span>  数据库加载中</span></div><div class="search-wrap"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索文章" type="text"/></div></div><hr/><div id="local-search-results"></div></div></div><div id="search-mask"></div></div><div id="rightMenu"><div class="rightMenu-group rightMenu-small"><div class="rightMenu-item" id="menu-backward"><i class="fa-solid fa-arrow-left"></i></div><div class="rightMenu-item" id="menu-forward"><i class="fa-solid fa-arrow-right"></i></div><div class="rightMenu-item" id="menu-refresh"><i class="fa-solid fa-arrow-rotate-right"></i></div><div class="rightMenu-item" id="menu-home"><i class="fa-solid fa-house"></i></div></div><div class="rightMenu-group rightMenu-line rightMenuOther"><a class="rightMenu-item menu-link" href="/archives/"><i class="fa-solid fa-archive"></i><span>文章归档</span></a><a class="rightMenu-item menu-link" href="/categories/"><i class="fa-solid fa-folder-open"></i><span>文章分类</span></a><a class="rightMenu-item menu-link" href="/tags/"><i class="fa-solid fa-tags"></i><span>文章标签</span></a></div><div class="rightMenu-group rightMenu-line rightMenuNormal"><a class="rightMenu-item" id="menu-translate"><i class="fa-solid fa-earth-asia"></i><span>繁简切换</span></a><div class="rightMenu-item" id="menu-darkmode"><i class="fa-solid fa-moon"></i><span>切换模式</span></div></div></div><div id="rightmenu-mask"></div><div><script src="/oct25-xxxxx/js/utils.js"></script><script src="/oct25-xxxxx/js/main.js"></script><script src="/oct25-xxxxx/js/tw_cn.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.js"></script><script src="/oct25-xxxxx/js/search/local-search.js"></script><div class="js-pjax"><script>function subtitleType () {
  if (true) { 
    window.typed = new Typed("#subtitle", {
      strings: ["每一个不曾起舞的日子&#44; 都是对生活的辜负 !","Never put off till tomorrow what you can do today.","成熟的人眼里满是前途&#44; 稚嫩的人眼里满是爱恨情仇 !","Keep Writing and Keep Loving.","今日事&#44; 今日畢"],
      startDelay: 300,
      typeSpeed: 150,
      loop: true,
      backSpeed: 50
    })
  } else {
    document.getElementById("subtitle").innerHTML = '每一个不曾起舞的日子&#44; 都是对生活的辜负 !'
  }
}

if (true) {
  if (typeof Typed === 'function') {
    subtitleType()
  } else {
    getScript('https://cdn.jsdelivr.net/npm/typed.js/lib/typed.min.js').then(subtitleType)
  }
} else {
  subtitleType()
}</script></div><script defer src="https://npm.elemecdn.com/jquery@latest/dist/jquery.min.js"></script><script defer data-pjax src="/js/rightMenu.js"></script><script defer="defer" id="ribbon" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/canvas-ribbon.min.js" size="150" alpha="0.6" zIndex="-1" mobile="false" data-click="true"></script><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/activate-power-mode.min.js"></script><script>POWERMODE.colorful = true;
POWERMODE.shake = true;
POWERMODE.mobile = false;
document.body.addEventListener('input', POWERMODE);
</script><script id="click-heart" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/click-heart.min.js" async="async" mobile="false"></script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>